{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "73bd968b-d970-4a05-94ef-4e7abf990827",
   "metadata": {},
   "source": [
    "Chapter 20\n",
    "\n",
    "# 抛硬币\n",
    "Book_3《数学要素》 | 鸢尾花书：从加减乘除到机器学习 (第二版)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "a20ae7d5-0b4e-44b6-b4d4-a75d4a1abca8",
   "metadata": {},
   "source": [
    "这段代码模拟了一次抛硬币实验，意图通过可视化展示独立随机试验中的正反面分布及其累计均值的收敛性。代码设置了100次抛掷，每次结果为0（反面）或1（正面）。这些结果可以看作是一个伯努利试验的序列，其中每次试验的成功概率（即正面概率）为0.5。\n",
    "\n",
    "首先，代码生成了一组抛掷数据，并将正面结果标记为红色点，反面结果标记为蓝色叉，以便观察每次抛掷的具体输出。接下来，通过计算每次试验的累计均值，代码在图中展示了随着试验次数增加，正面结果的累计比例如何逐渐收敛于0.5。\n",
    "\n",
    "对于每次试验 \\( k \\) 后的累计均值 \\( \\text{cum\\_mean}(k) \\)，计算公式为：\n",
    "\n",
    "$$\n",
    "\\text{cum\\_mean}(k) = \\frac{\\sum_{i=1}^{k} \\text{结果}_i}{k}\n",
    "$$\n",
    "\n",
    "代码通过第二个子图展示了这一累计均值曲线，并用红色水平线标记了理论均值0.5。随着试验次数的增加，累计均值逐渐趋近于0.5，这体现了大数定律的效果，即在大量独立同分布的伯努利试验中，正面和反面的出现比例趋向于0.5。这种收敛性在实际应用中为概率的频率解释提供了直观依据。"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f3430fdf-2cdf-458f-a152-0c5d8f78dacd",
   "metadata": {},
   "source": [
    "## 导入包"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "69771e04-b409-4999-9f52-0828a2c710d2",
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "19caae7d-c63a-4323-b479-be22079a76cd",
   "metadata": {},
   "outputs": [],
   "source": [
    "p = plt.rcParams  # 获取默认绘图参数\n",
    "p[\"font.sans-serif\"] = [\"Roboto\"]  # 设置无衬线字体为 Roboto\n",
    "p[\"font.weight\"] = \"light\"  # 设置字体粗细为 light\n",
    "p[\"ytick.minor.visible\"] = True  # 显示 y 轴的小刻度\n",
    "p[\"xtick.minor.visible\"] = True  # 显示 x 轴的小刻度\n",
    "p[\"axes.grid\"] = True  # 启用坐标轴网格\n",
    "p[\"grid.color\"] = \"0.5\"  # 设置网格颜色为灰色\n",
    "p[\"grid.linewidth\"] = 0.5  # 设置网格线宽度\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "56c7daca-e819-4e1e-8d47-cc3ebac4ae24",
   "metadata": {},
   "source": [
    "## 抛硬币实验"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "c3faae8a-d983-49ba-abaf-1afa04b42ebe",
   "metadata": {},
   "outputs": [],
   "source": [
    "num_toss = 100  # 硬币抛掷次数\n",
    "toss = np.random.randint(low=0, high=2, size=(num_toss, 1))  # 随机生成0或1代表抛掷结果"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "785cdfdb-f289-46dd-8425-89912b991117",
   "metadata": {},
   "outputs": [],
   "source": [
    "up = (toss == 1)  # 判定正面朝上的结果"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "1e415041-1d52-4503-9fa4-7ff14f7be756",
   "metadata": {},
   "outputs": [],
   "source": [
    "iteration = np.arange(1, num_toss + 1)  # 记录每次抛掷的次数"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b6602e5a-2ea0-4935-a9a7-ff434c37ed9c",
   "metadata": {},
   "source": [
    "## 可视化"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "7b3aaefd-6f3d-4bea-8aff-2d1c0a312fe9",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.axis.YTick at 0x27adca7fd70>,\n",
       " <matplotlib.axis.YTick at 0x27adca7f6e0>,\n",
       " <matplotlib.axis.YTick at 0x27adca7ebd0>]"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAh8AAAGdCAYAAACyzRGfAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAABXoklEQVR4nO3deZgc1Xkv/m93z75qVkmzaV8YIbGIkUBIAgkIEXKMTQQ2NhdwLK5jj8l1cHwTbryBk5D8ktz4xowtZEzYgmzJKwibOBZiE0IagRiBBi1ImtEskmbTdPfsPd31+2OmW713dXedOlXd38/z8NjTqq5z+tSpU2+9darKoiiKAiIiIiKdWGVXgIiIiNILgw8iIiLSFYMPIiIi0hWDDyIiItIVgw8iIiLSFYMPIiIi0hWDDyIiItIVgw8iIiLSVYbsCoTj8XjQ3d2NwsJCWCwW2dUhIiIiFRRFgdPpRFVVFazWyPkNQwYf3d3dqK2tlV0NIiIiSkBHRwdqamoi/rshg4/CwkIAU5UvKipKal27du3CnXfeqUW1KAa2tX7Y1vphW+uHba0fUW3tcDhQW1vrO45HIjz42L9/P1wuF9avX6/6O95LLUVFRUkHH3l5eUmvg9RhW+uHba0ftrV+2Nb6Ed3WsaZMCAs+du/ejfb2dqxfvx4tLS2iiiEiIiKTEXa3y+bNm9HY2Ijly5eLKkKczk5g796p/w33t5rvqF1Gz+8luh6V6648ejT6ujUsK+bvUPtb9dzWiSwToY6atLWWfU9kX9Oq3mqWSaStBZev276faH9MtPww3wlpazVly+5XoraZyHWraWvRFB0899xzcS1vt9sVAIrdbk+67BdeeCG+Lzz5pKJYrYoCTP3vffcF/v3kk7G/o3YZPb8X7neoWU+ibZRIO4osS007itzWiSwjsq217Hsi+5qothX5O4xWvpb7p1bli2ozvfuVyD6jZ3/QkNrjtyGCj7GxMcVut/v+6+jokBN8dHRc2iiR/rPZppaL9h01y1it+n4v+D8160m0jcKtO1Y7iiwr3DKJ1DHRbZ3IMiLbWss+m2j7q9n+avqDyN+WyO8wYvla7Z+J/jY9+6Oe/UrkNtOzPyTSZlGoDT6EzfmIx2OPPYZHHnkk5PNdu3YhLy8vqXV3dXVhx44dqpatPHoUN3k8sK9ZA3g8Af9mGx1FQUsL4HZjzxNPoKe+PuA7ADC0YgUKjhyJuszArbfCZrf71jtZVobit95Cht0e8XuTBQUY3LgRmT09l743YwbKXnll6o8I33Nccw2UjOibeLymBpU//3nY9URro4sbNsA6Ohp13eFEasdoZQ1dcQXcublxl5Uo28hIzO2oZlsns4z/coNr18IyORn377BMTqLo0KHo5V9xRcx+ffGmm2AdHo67/GCu8nKU79499YeK7R/MW6eRRYuQ3dkJ2+hoxHq7ysrgyclBdldXxGUUmw19n/oUsrq64vodE1VVqPjlL8P+Dl8dlyxBTlsbrOPjEZeZqKiAc+VKZAwOxlX+ZFkZyl5+OWr5zquugic7O671AoCSnY0Zr78etT/6+myU8h2rV0MJmnBonZhA4XvvJT+G3nILbE6nb73u4mIUvP8+si5cSKpfqS2/f/NmZPT3q14/MDVeF777LrJ6eyOu25Odjf7bbkPWuXNxrXti1ixU/PrXU39EWPfQ5ZfDXVg4FW5Myzp/HrltbQm1WTQjIyPqFtQs3InCbJmPwWuvDYkOfZ9FiSz7b7015jK+9UxHraNz5ihjVVVRvzc+c6YyMn9+wPcC6hjhe+F+R3DUbF+9WvF4I+M4shFq1h3u3yK2o4Cyoi6TSB3j3NZJLeP/+6+7LrG29n5P4z6baPtH7bNqTNfJvmqVMlFSErXeo3PmKMNLlkRdZjI3V3FecYW2v8Nbx9WrFVdxcdRlRubNU8ZnzhRSvpD9c3rdvj4TZ/mixtDxykplZMGCpPuVJvtDhLYenzlTGZk3L+q6XcXFytBll+nfHyRlPgzxePXs7GzfbbVa3F6bsJoaYPt2wPtUNpsNuO++qf/1/v3EE1PLBX/HZoO7oCDmMr71bN8ObN8Oy+QklMzMqN/z5ORMnUH5fS+gjpHKi/Y71JSfaBt56+j/Wax2FFlWuGUSqWOc2zqpZUS2dZJ9NuH2j9Zn1Ziuk5KTAyUrK/o+k5sLT4xllJwcWCYmEvodSoy29eTkCC0/YjuK3D+n1+32Pr8h0fI17o/WyUl44hnDgnm3hxb7Q6Rx1u1W1WetMvpDIm2mBc3CnShMNeFUUZTBjz9WlL17L0WDHR3K4BtvRI8OOzqUc/v2xVwmeD0TbW3K8OuvR/3eyJkzyvhrrwUsE1JHlb8j+DtDp08rrhjrUbvuP3zzm6FRd7ztmODvCFdWzGUSraPKba3JMorAtu7oULoT6LOJtr+aPqvGwMmTymjQ/hBs6PRpxRHj94+3tSkjwftemN8R3NaOU6cUd4zfMXDypDIWo47OU6eUSUHtmOg+o2b/PHfsWELlq+mPbz7zTNz9cbK9XXEmMK4E85w9q5x/663k94cwbT3Z3q44Y4zzY2fOhPZrlf3Bk8D2CBlDNGKqCafBpAcfg4OqPgvW2dkZ97pdLpfidDqjfmdoaEhxuVxx10fNMsPDw8r4+HjM5dSsW01bq6mTFt9JRqzyPB6Pqm2t1TIi27pDxeCjVftrtZ6+vj5lZGQk6jIOhyNmeWNjY8ro6GjM8oLb2ul0KpOTk5rU0e12xyw/mFb7fqLfS7TPqln373//+7jX7fF4NDlWTE5OKt3d3XGXr4bb7VYcDkfUZUZGRhIai9X0o0THkESY6rJLKlAUBZ6gSapqWK1WKIoSc92iXrCnpnwKpLa91PSHRPqMlsy47S0WS8x2U/O7PB5P1BdfRWK1WlVtt1h18Hg8pnxxpsg+m2h7aNGPRe4LavtsIr/fYrGYcj/WJfi455579ChGKkVREhrI1HTKRAdJrcqnQCKDwVSm1SCpZj1qyhE52KsNUGQebI0m0d+k1b6oZpwVWUfRwbDRMPOhkUTPYtR8R+RAw8xH/EQGg3rSe7trNUhqtR6Rg73IoD5V91llahqAtPLVjOGJnmRqVX44zHykOZGdEggNUrTqcGaNmmVSc8ZsluyInnXUcpDUKs0uarAXeUAw68EmFtnBh5oxXOR+nei6zTqGM/jQiNqoWauOq2cKmwKpTc8aPfjQe86B0QbJRH+/7N8hu3xRPB6P4TMforOezHxQ3NREzVp2XAYf8hhhkNKC6GxdMCP2tUQHe5kHf9nlA2Iu2amZtC+y/6gdw412UmHWYNTYo6OJ6J350KrDGfGAYHRapWdlt7tZ+6xssudcpGr5ajIfsudc6B2wq2HWMdxYrWhiMjIfsgZyM1xSEEnLzIfMdtT78pFZB8lgsn+H7MyHqPLVzPkQmXlQ09eZ+dAOgw+N6D2Qyzz7SffgQ6vMh7fPyNyOevdZMw6SRsPMh7zDluzyw5EdDCfKWK1oYvEcbLQgcyA3w3wGkbR6gJWiKLDZbFK3o5591qyDpNGI3PdjbSPvOCcz8yFz7JFdfiphK2pE5EONwpE5kKd75kMNtQf2jIyMmIO9KHpPsJN9uSBViL6NN9o2UhQlZp9NlNrMh8yxR3b5qYTBRxCRgz0zH+nDe2CPFVjEynzoMcEuVh21zHxQ8kQGH7H6rMfjEZatM0Pmg8GHdngECSJysGfmI32oCT68A3msZUROsDPjrYUkjprMR6w+KxLHntTB4COIyM6tdQpb1gAg++zDDOIJPmRlPoDYGTQjTrAjcbTqs8m8syZW+eyPqYFbMUiynVvNY5fNjmcf6qg5sMvMfACxg1gO9ulFqz6baJ+J9aAxjj2pg6NKkGQ6t+xb4PyJzuCk+wFJi/d76JH5iFVHNQcbDvbpQ20wquaOmETEynywP6aO9D6ChJHMgdVItxKKDBA4AGjzWnW1l2ZEBsNqb62k9KBFMBpt7FFzNwvviEoPDD6CJJv5MMqOI/KgwQOS+teqqzn4i8p8aBEgkfkks39qcRkuUvlqgmE1d7yIZKQTyFTH4CNIpJ1LiwOJnox8aSSenduogY5WB3aRj3NWW75R+ixpI9nsrajMh5p9Rnbmg8G4fox5dJIo0s6l9mBjlKjZqAfteNtIxu/QMrBItj/okfkwSp8lbSSb+Uh23dEyH2reWsvMh7aM+nsYfASJFLWb7SzSqJmPeHduGb9Dq8BCi7Mo0ZcBjdRnU4XswV72vs/Mh/EY8kRUdgWMJlrmI1anNNJZpJEzH/Hs3Ome+UiGmj4ru47xMmq/DpbOjwBPJvOh5hHrIpltf1BDdjAaifFqZFBq7xwwStRs1A6XTpkP2dT2WTORfWBVQ/a+Z4TyE7107f2+LKmY+TDqPmO8o5NBMfOhjXTKfMhmpGBYK/EcWGUFiLL3PdnlA+GDWrPsM0YZw7UiOxiNxHg1MigtnpmgJ6O+k4OZD/0YKRjWipp+7f3NsraR2ttRZZYvg+i38WqxbtEBkqz+aMRjgfF6qEGZsVMassOlSObDDMGHGeoYL7V3/1gsFkNnPpJ9cm2y5csgcgzValvLfGOwKCL7WjIMVaOmpibU19ejoaFBdlVCyIrajTqQJCpVMh8kh5qzOG+fkbUdk3kQl1blG3HMEH1g12Jbi7xUKTMTZ8T+YKjgo7GxEa2trWhubpZdlRCyIuJUCz5SJfNBcnjP4tQE7LLmvPiXH6mOooPqVBoz1NAy8yFKtLFP5HjDzIfJyYrajXr9NlHxtqOs4IOZD2PynsWpObDLCuq95adTRlM2M2QrY/UHUeO8UY8hxqtRGjLCIMUz/Ut4UDAu7yAdK2C3WCwxzzRFX/ZIp5MK2cyQrVTTZ0Uwaruw9xuA7EEqFe+KoNSkJvMRz6UZEdRcdmHmQ1vMfMQu22gYfBiA7EHKDGcNRF5qsgqiMw+x9hlmPvSV7BimxzjL/hAovX6tQcnulGY4ayDyF+uSSqzMR7Jp7mQfXW/UOxDMKtkxTK+TPFGXAc14AsngQwPJbnRmPsyD6XJjUHNgF5nmVnOpUk2ARNpIdgyTfXlbdCbOiNj7NZLMAYmZD/NIx/So1kQ/iVJNgCg788EgVltmuOwisj+YcQznKKoBLQ5IzHyYAw8aydFqcrOaORfRyM58JCvV9lnZ+5URHgzHzAfFTYvrdaLWrYYZo2ZZZL+3Qyuy6miUx2AnO9jLfv9Pqu2zsoMPtdkyoz4S34z9gcGHBmQdkIwykKcT2e/t0IqsOmr5GGyZaXbZ7/9JtX1W9uVM2ZkPLfojg480pPZNm1rvXFoN5GaMmmWRPUhpRdbdFkY5aJr9TFN2+VqTvc/Iznwky4zPajJmS5qMmsBCxM7FzIf+zD5IeZk98yGb7H0m1cqXHdTLLj9ZZtyvjD1CmoSajivigGTGDmd2Wg1SsgcyWYOtGdPD4cj+HbL3fa3Llx3Uyy4/WbKD0UQYsyVNRtbBRkaHk33QlE2rQcp/PUbdjqICZrMNkuHI3gdkH2xSLfNhhhOGaGT3h0Qw+NBAOmU+jBz960Ht/J54DuwyBg5Zg73sM/ZUIbod9b6N2AyZB9nlR8PgI02p2egiJvgZ9Yw51THzkTgzDpJGJPo23nDrFtlnZWc+1JBdfqph8KERM9/tEg8jR/9GEe+BPdJ2TMUJdgw+tCFyzkmkbaSmzybKLJkPBh/a4VHEj+jBPhUGckb/sam5pBJ8FhluIBc52AVvx1gHGzIWkfugmmBY67HHLHMuZJefSjiy+BE92ItIYTPzYTxqBungs8hIAYoes/vVpNkpfSST+RB56z/HntTCLelHr8FeKzIODDwgxUftWWSkzIceg63s8slYksl8aDGGqskWkvlxZPGjRebDCNe0RZbPA1IgNY/YjnVgl515kF0+GYuazEOkfq1Fn4lWPvtj6uBRxI8WUbsRbiU0WwbHrNS0g5oDe6Q+o0Wgp/YdJHrPOSHjUpv5CEeLPhttDGV/TB0MPvzoNdiLZraJs2al9s2myaSwtTiLjFXHaA/+4rY2F9GZh2TvkFIbDBthDCWxGHz4UTvjOhojZD5EXxrhAWmKmkFSzRM9RU6wU1O+EfosaUOL4COZW79j9Vm1+4zsR8cz+BCPwYefWDtOMgcSPRk9O6G2jWRe4tFqkExmINUr82GEPkvakD3nIlb5arOFqfToeAqPwYcfLVKGsqN2QN4bS9VSu3PLnNyazFyJeNcTiRZBJDMf6UV21jNVMh+psj8YeY6ecY9QEsQa7M0QtQPGz3yo3bnNkPkQnQlj5uMSs9QxnR8BzsyHscjuD9Ew+AjCzId4Zsh8JDOZNHgZmQOZWS4VqmHkgdRLdh1l3wrPzIexyO4P0RiqVk1NTaivr0dDQ4PsqoRlhqgdYOZDC8neJWIUMp6CK4rRg2pA/r4nu/xUyXyk0j5j1GOBofbkxsZGtLa2orm5WXZVwtJqHoBoRh+kzZL5MPoZmhpmCJDUSqQ/6H0gk73vyS4/FtHjoxbbOt33Gb0Ys1YGpTZql83I0S5gjsxHPHU0MiMEw1pJ5OVjegeIWtwRkmz5Rj3YAGIP7Fq1qch9RkYwbNRjgXF7qQGJ7Djh1m30A1ui1O7cZrjbxejMUEe1EnnIlREzH3q+rdhoRB7YtQo0RQdIegfDRg1GjVkrgxJ5FhUp+DDyQJIotTu3GTIfpJ9w/SG4HwUPtjIyH2oCpHR9/YHIumkVaIoMWPW+pGPk/sDgIw6iO2XwIGn067eJimfOh5FvtSV9hQssYgXsstPc4co38tmomZnhhCHSOJ+Ol+GMWas0FGmQMmrUmox4DggMPsgrkQO77MFe7/LTmRnmN+kdjBq5rzH4MAjZmQ8ebMnoEjmwyx7smfnQjxnuUtE7GGXwQTHJznww+CCjM2LmI9ZlH2Y+9JNo5kPPcY/B6CXp94sNSnbmwwzXS4n8yc58JPr02HQ92IiWTOZDr2BQ72DYyLgHGITsQYqZj9jYPsaiZp8Jdzas1WCf6KPCmfkQI9ETKNnjrJ7BsJEw+EiSVgOJ7EGKmY/YUvXuI7NSm/kIpuVgn8ijwlN1IrkRJHLw1XOclR0MGwlH0iSJ7DiyI3IKxDNWbYh8HkMiT0HVsvxgkQKUdEyzR6LVb0i0TdU+m0ULsoNhI2HwkSStOo7sJ5yarePKwGv12tDySZQy0+yyX5JmtjR7NEZ+GZ53GaPfDmu2E0iOpEkSfTYca91ankUy+IhOz7NqkWTXUfaTKPUc7FPpPSGihAsG9eyfiTy2X+vyRV26NzIGH0mS3XG1GoBS6SxKFNnbWiuyMziyB0k9B3uRfUF2O2pFzWPz9S4/mOh9hpkPipvsjiv7LDKdyN7WWpEdIBmhr6XCYJ8q5csO6mWXrxWzBaPGHiVNQHbH1arDyR7IzECrbS27nVOlz8om+3fILl+rMUP25Uw1mTAznFSYbQw3dmuagOyzYT07nBmif5G0HKTMMMHO6JcKZZP9O2TP09KqfDX7jMjbk9WO4UYf+2QHo/Fi8JGkdDqLTPfgQ82M90SDUT0PZOnUZ1OZ7HlaWpWv5sAu+hk7ssvXguxgOF7Gbk0TSKfMhxmif5G02tbh1mO0IDJV+mwq0/NOmnB9Rqvy1RzYZY89sstPRQw+kiQ7ha33Qcvo0b9sWmU+RB6cZWc+ZF8uSBUiMx9qgo9UynzEIrv8VMTWnCZ7sE+UngM5o//YIm1rNQO5/3YUOdjJnmDHPqQN0Q8w8++P4fqMVic+Zphzke6XnEVg8DHNDE+wC0fP676M/mNTc4aoNvOh5wQ7Pcsn4ws+qQm372sZ/Bg980Ha49acJvtWrkQZbaJiukv0wB7uTFPPCXZ6l0/GFi5gVpOt02qcC95n2B9TD7fmNK07d3BAkApnkTwbToyaA7vszIPs8slYEsl8iAw+2B9TD4OPaVp2bpm3wMl+EmC6Uft+j3jPIkUHw8GY+SB/iVwq1LLPiMyqkDFwdJmm5Y4j81ZCkQcNDgCh1GxrNQOpmgAlUWqCYZ5pkr9EDv7xjD3x7jOUehh8TNM68yFrx9F7omK6S/S16rGemaDlBLtEAiQyH9lzLtSWn0i2UG+yy08HDD6mxfNYbCPvOGZKl0drI7MEOlod2IN/q9aZj0QCJDIXrbO3ojIfajJxsoNh2eWnA3McpXSgZdSeqpkPLcVqRyP8Di0Di3gP7Mx8ULy0znzEu+54xlCjB8Oyy9eC0etvqOCjqakJ9fX1aGho0L3seKJ2I+84Zsl8xDr7kf1QIUC7bZ3IgV3vy4CpMNimO9n7PjMfxiN7DI3GUEepxsZGtLa2orm5WfeymfnQV6w2MsJDhWRmPrSk9lKhkQdbM/Rr2XU0S/mpss8YnexgNBbj1sygjL7jGL3DecVqo1TKfMiWyJwTo5F9YFVD9r4nu/xUmnCaCpkPo+8zxj9KGQwzH9pIp8yHbLIHci0ke2DV4/fL3vfMUr4ZgnrZ5WtBdjAai3FrZlBG33GMkDFQQ03mQ/aOY/RtrZYZAqRYkjmw6vXQP7W3o8os3whE7jNarVv0PpMOwXAsxu+pBiP6YKPFuo3c4bzUZD5k/w4zpIfVMEMdY0nmORN6/X61d4Sk+0MARR7YtdrWIvuMkYJhmYxbM4MSveN4mWUgSVSqZD5IH8k8Z0Kv7ajlg7gSLd8sY4bIA7sW21rkBGy9gmGj9wcGH3ESHRF7O3yqBx+pkvkgfUQ6sPtvI6NmPvzL1/ttxUYkso5aZj5E0WucN8K8uWiMWzOD0ut6pRHO/EUyy0PGmPkwhkhncWr2Gb0G+2QCJNKGGbKVevUHZj5INSNkPnimf4mRd9x0E+ksTs0+4x9Eynj3kX/5qX5SIZsZspX+fVZkgGD0QJd7gYHIHqTMsONSeko28yHzTFOv8smcmY90vQzH4MNAZA9Ses3CJkpEpAN7PJkPrYP64ICdmQ+54j2BkjXO6pH5MDruBQYS3Cn1HqTMcNZA5E/NgV1kUK9mXpDsk4p0Eu8YJmN7iMx8mCl7zeAjCVpvZNkT08zUcfXGg4YxqTmwi5zIrSZbyMyHfuIdw2RkHkRmPsw0hnMvSJKWHYeZD+NK5/SoKFrdEhnPQM7MR2pL5LKLzLl1WpdvpjGcwUcSRAQIzHwYk9HvmTcbreYXBa8n0QeRaVV+pGXM/sAqUWQHY0Z4MBwvu1DcRJxFiVq3GmaKmvWm9qza6IxSRy0fBiXzGr+a8kU/G8jM+6zs4EPtk3PNcjusmcZwBh9JkP0iKS8zvM/A7NRkPmQPpGoYJYOj5WOw4yFrzofZ3xMiiuw5MGrHcLO8j8dMY7j8UcjEZL9Iykursx8zRc16kz1IacUoc1dkDZIyMh8iyS4/WbIDdtmZD62ZaQw39khpcLKvF3ppefZjlqhZb6kySBklQDLTIBmN7MyD7PKTDSJlj6GpclLhxcxHmlBzsNEjrSgrhZ1OtBqkZA8MMu4ICcdMg2Q0sjMPsoO4ZMtXG9TLvOwh+9JQPGT3h3iYo0UNyijzAPQYyGWnR2XTapCK1mf02o5G6LNmGiSjkb1PyA7iRGY+vG0r43088S5jFLL7QzwYfCQh1TIf0Zgp+hdBq4xBtPXoMXAYpc+aaZA0MtH7vujbiKPtM6IeDBcv2eXHw0z7lTla1KCMMg+AmQ99pEvmI1UC5nSgx5000fZ9s8/5UEN2+amKwUeSjHC3CzMfxpBsMOrdjqIn2BkhzWymMzQjEznnxLuNou37Zp/zoYYZJpKbEY8mkPOabS0x82EMsa5fe88iYy0j+qFG0QbyWAcbMhaR+6SaYDjZsccscy5kl5+KOMJA/ISmVLh+zgNSbNG2QTxnkbIeaqQmzU7pI94+KwKD4dTFLQr5t3Ili5kP40jmkooemY9o1BxsKH3E02dFBMwMhlMbRxiIObDKuKYtsjwekKJT+4ht2ZmPaPSYc0LmoabPeueciBxDOeciNfFoAjEHVhkPHzLTOwhSiZp2UXsW6fF4hAy2aoJhkeWT+ajts4CYMdR/Miv7Y+oxVPDR1NSE+vp6NDQ06FquiMFWxmOPzT5x1qzUzPj3T0+rmXMhIhhW88wG7zLc1uYiYqyJ5zJcvGOP2mBY9h1RsstPZYYKPhobG9Ha2orm5mZdy01ksBf98J1EiL40wgNSeGoP7GoDFNFnkdHK57M3zEnUnAu1l1Ti7bNa7TMiyX5vTqozVPAhS7xn9WqWlTXnw0wBQqQ2MtLv0DqwUEPWHCQOtuYle85FvOVrvc+IILv8VMfgA/GfNajZcVIx86G1SDu3kX6HVunhePqDqMuAzHykLtlZz1TNfJh1fzBD0GSMEV6yVInazTYvI1I7pnvmw7u8ltQEFkbNfBixTsFk91mzlW/UMdRI5SdD1h1z8TB27XQiYrKUjKjZDB3OnxkyH1oNkrIHMjWBhew6RiL7wKqG7DrK3meY+TAWM5yIGmOENxmjRu1m6HD+0inzIZuZL6mYIaiW3WfNVr5Rx1AjlZ8MM+wzxq6dQcXzzAQ9maHD+UulzIfRD+xGvaSihhZBtegDiew+K7v8eIneHlqs2wwnFZGYoT8Yu3YGpfaApDfZZz/xSpXMhxnOkMwQIEWiJqiO1WdE/341fVb0O6SMss+oIfLArlU7iNyv9Qi+jN4fGHwkwMyd0khSKfNhdGaoYyRaPORKdOZHxIO4tC7fSESOc1oFNqIDJNn9UTZj186gRHdKs83dSFSqZD5ILLUPuYoVfMjOfJj9BZZaUrtfJfKbtNpnzRAgRWKG/sDgI0EiO6Xb7TZ81KqFaJkPo+w4Zr7umypiHbS9AXusZWSeaabTSYWWEtlmZthnRfcHZj5SlMgBxGKxwO12p8UgFe2AYJTfz8yHfGouqcQK2L0HJFmDfTqdVMhmhn1WdH9g5oPiJnuQMsOOS+lFTVYhVsAuOqhXM+E1XU4qZDNL5kNmfzQCBh8GI3uQYvBBRqPmOStqMh8yzzRln1SkEzOMYewPDD4MR3anNMNZA6UfNQd2NZkHEfuV2qfHpvvBRi9qxzCZ2QE1fTbVcU8wGGY+iOKj5sAucr9S+xTcdD/Y6EXtM11kTsoUGYyaZQxn8GEwVqsVk5OTzHwYiNmeHJtuvPuMmoeMicp8qHkWDIMPfag9+MrMfIjsD2Z5mjFH1ASJOiCJHCTVlm+GjqsnM0zeMiOtn8cg6wmj8bz/h/1IPLVtLHuclRkMGwGDjwSJGkhkPwbbLB1XT2a4Z96MtOrravus7MyHqP3KLGe6wWQH9WoDVlH7vshjiBn6A0fUBIlOxXPOh3GoHSTNcFZrpDpqedCUmWaX/f4fs+6zsi9nyn4kvqh1m+UEksFHgtRGrXoN9loN5GbpuHqSPUhpxWhpf62yAfGk2WUN9iLb3az7rOz+KPuR+ICYfmGWYJTBR4LURO167lxaDuRm6Lh6UrMdzXBpxmh1lHG5IBUvlcouP1FmyHzIDpASYZZg1DgjkcmoPRvWa+fSaiBn8BFKi1e6G4HswT6YWQbJWGTPuTBr+WoO7CL7rOw5H6KYZQw3V6saiBZv2tSSyLMfM3RkkbTMfMgMUGQP9sHMMkjGIvt3yM58JFq+7Oyx2v3a6CcVwcwS1DP4SFCqZj7CMWP0ryWtBkk1fUbkgUz2YB/MLIOk0THzkTjZ5YtihqA+Q+TKXS4Xtm/fjqysLHg8HtTV1WHTpk0ii9SNyJRdIoO/6IOW2aJ/rWmxrdW0o8gDstHSzFr2WdmTv2WWL/tOmkTLN8PlTJHli1yvGcZrocHHzp07cf/99yM/Px8AsHv3bnR3d6OqqkpksSG++13AZgO+9a3Qv7/3PaC0FGhsnPq3730PcLunlom2HpvNFrCBvd8DLi0T3AniWbe/SN/z/47ValVdVrSygz+b+j0efO1rlwaJeNatprxEt4dIarYHELv9/ZexWCwBg22yfSbe36Gm/GT6USL18Xg8AX0tuD6R+oP/MlP//9I28q9zIvtVvL8jUvlq65gIrfb9WOuO1B+BxMqPVe/3378cx4/H7rOx1h38d3C9gcB+Fem3xVO+GjL7o95jaCxCT3FcLpcv8ACA2267DXv27BFZZFg2G/Dtb09tBP+/b7oJ+Pa3FXj71ve+N/V5UJ8Iu57gjev9nv8yVqvV13G1WHe07/jvJLHKitU+/p99+9tAZual6D/edaspL3B7QPX2ECnebR2p/YP7Q7h2TLTPxPs71JSfTD+Ktz7euvj3Nf/6ROsPoX3IFrbOiexX8f6OSOWrrWOy5VssFmHr1rrPxFq31aqoKj/Wuv3/9vYj/3r796tov83/JFPrttW7PxqOIsj4+Liya9eukM9feOGFmN+12+0KAMVutyddD295jz6qKMDU/yqKomzcOPX3Lbe4FYfDEfLvkXiX+8lP+sKu1/+zH/+4X3G73ZquO9J3vvc9j9LX16e6rEjrefRRRRkcHPT9DSjKv/7rqDI2NhZz3Wq2bXB5P/zhoKIol7bHxo2B5cf7O7QUz7Z+8sk+xePxRF3m8ccdyvj4eNRl/uVfRhWn0ymkrX/yk9h1bGqyR6yjVqL1teD9M1p/8P8sWt9PZL/yF6mt1ZSvto6J0GPd//Zvw8rw8HDU3/bYYy7l4sWLmoxzweP1tm0XFZfLFfe6w40r/v/uv0y035Zon0n092uxXrX9IZ4xJB5qj9/Cgo+Ojg7ltddeC/n8+eefD/lsbGxMsdvtvv86Ojo0Dz4UZWojFBS4lNmzJ5Sysgnl9tsnlNraUeXqq51xbfxHH1WUG264qGRlRd64l5bxaL7ucN8BFOWmmy4m1Ym967n11gGlrGxC+ad/mvrvmmvsSlXVeMx1x9uZH31UUa6/fjBge5SVTSg33jgoPfDwr6P6bR19mRUrnMrMmRNRl5k5c1y5/PJhIW2tpo5XXulQystdwtvf29c2beoP6GtlZRMh/WHDhsj9Wm3fT2S/8orW1mrK12r/TLT8ZNY9Z86osmjRSNTflpMzqVx/vV2TcS54vF692q4UFU0mtO7gfuT929vXbrppIOn9OlGi1h1Pf5AdfFgURcxMpba2NnR2dmLt2rUBnz///PO45557Aj777ne/i0ceeSRkHU8++STy8vKSqkdXVxeqq6t9f//VX30KeXkKMjI8+Lu/+y9885u34vTpPHg8Cp59dqfq9T7wwBYMD2ciI8Md8XtqltHqe/feexdsNgvc7vh+R7j1VFZOoqjIhb/7u/8CAHzzm7fi+PF82GyeqOsObms1GhvvQFmZO2B7dHXlYHTUktTv0JJW2/qLX9yCsbGMqO14//13wuOxAoi+HRNpa63qqJV7770L1dUu5OZOBvS1yUlrQH84fz4bQ0PWiPVR2/cT3R9jtbWa8rXaP/Ve9xe+cCcmJ22wWCL3h3vvvXN6onTyY2hwW2/dugUjIxnIyIivP/7lX34ahYWegH7k368A4Otf34T29jwhY7gaotattj8kMoaoMTIygq1bt8Jut6OoqCjygkJCHyVy5uO5554L+UzPzAeg+KJNb0ou3ugzeD3RznZErFurstSsJ551J3I2rsX2EEmrba11n0m2rbXss4lQ09fU9Ae1dU7mt6nJfMhqV9nr1nqcizZeJ7rucP0oVbebyDFELemXXcbHx5Wf//znIZ+HCz6C6TnnI/haYKxOELxcuO+pWSbRdWvxnXjWE8+6E5mHkOz2EEmrbS2izyTT1lr22USo6Wtq+oPaOif729TM+Ui2jomQvW4R41yk8TrRdUeb85Fq203kGBIP6cGHoijKU089FfC32+0O+SwcrYOPSBvF2zHVbiw1g5vaATCRdWvxHbVlh9tJY61bbWfWanuIpNW2FtVnEm1rrcpPlJq+pqY/JBtoxPPbwrW17HaVvW5R49yWLS2arTtcP1IzrsluW73WKzv4EPqcj8zMTDidThQWFgKYes7Hhg0bRBYZltsNPPropXug/f/2v7fb/9/VrMcr+Htqlkl03cl+R23Z3s+C1xPvutWUl+j2EEnLbS2qz6ghss9qVZ9wfU1Nf1BTZ632ETW/I9E6iixf5LpFjHPvv29J+LepHVfUjGuy29Yo6xVJ2IRTYOo5H9u2bUNOTg5cLheqq6tx++23x/yew+FAcXFx7AkrKuzYsQN33313UusgddjW+mFb64dtrR+2tX5EtbXa47fwzMeDDz4osggiIiIyGaHBR6K8yRiHw5H0ukZGRjRZD8XGttYP21o/bGv9sK31I6qtveuMdVFF6GWXRHV2dqK2tlZ2NYiIiCgBHR0dqKmpifjvhgw+PB4Puru7UVhYmNTb+RwOB2pra9HR0ZH03JFwGhoa0NzcrPl6Ra5b1HrZ1vqtl22t33rZ1vqtm22t37pFtrWiKHA6naiqqor61mJDXnaxWq1RI6Z4FRUVCenMNptNyHpFrltknQG2tR7r9WJbi1+vF9tav3WzrfVbt6i2Li4ujrmM0LfaprpG//cxm2TdIussEttaP2xr/ZixrUWvWxSztocZ21oNQ1520YqWt+xSdGxr/bCt9cO21g/bWj9GaOuUznxkZ2fjO9/5DrKzs2VXJeWxrfXDttYP21o/bGv9GKGtUzrzQURERMaT0pkPIiIiMh4GH0RERKQrBh9ERESkKwYfREREpCsGH0RERKQrBh9ERESkKwYfREREpCsGH0RERKQrBh9ERESkKwYfREREpCsGH0RERKQrBh9ERESkKwYfREREpCsGH0RERKQrBh9ERESkKwYfREREpCsGH0RERKQrBh9ERESkKwYfREREpCsGH0RERKQrBh9ERESkq4xEvrR//364XC6sX78+7L8fPXoUe/fuRW5uLoaGhrBlyxZUV1cnVVEiIiJKDXEFH7t370Z7ezvWr1+PlpaWsMsoioK3334bX/3qV32fPfHEE/jSl76UXE2JiIgoJcQVfGzevBkWiwUAIgYf+/btw8aNGwM+W7hwITo7O1FTU5NgNYmIiChVxDXnwxt4RNPe3o4FCxYEfLZixQocO3YsvpoRERFRSkpozkc0iqKEfFZeXo7e3t6I3xkfH8f4+Ljvb4/Hg4GBAZSVlakKeIiIiEg+RVHgdDpRVVUFqzVyfkPz4CMci8UCt9sd8d8fe+wxPPLII3pUhYiIiATr6OiIOtVC8+AjXKZCUZSoEdDDDz+Mhx56yPe33W5HXV0dOjo6UFRUlFR9du3ahTvvvDOpdZA6bGv9sK31w7bWD9taP6La2uFwoLa2FoWFhVGX0yX46O3tRXl5ecTvZGdnIzs7O+TzoqKipIOPvLy8pNdB6rCt9cO21g/bWj9sa/2IbutYUyY0f8hYXV0dTp48GfBZS0sLlixZonVRREREZEKaBx9r167Fnj17Aj776KOPMGfOHK2LIiIiIhPS5LLLgQMHAACrV68GAKxbtw4/+MEPkJubC7vdji1btmhRDBEREaWAhIOPe+65x/f/vUGH17Jly7Bs2bLEa0VEREQpiy+WIyIiIl0x+CAiIiJdMfggIiIiXTH4ICIiIl0x+CAiIiJdMfggIiIiXTH4ICIiIl0x+CAiIiJdMfggIiIiXTH4ICIiIl0ZKvhoampCfX09GhoaZFeFiIiIBDFU8NHY2IjW1lY0NzfLrgoREREJYqjgg4iIiFIfgw8iIiLSFYMPIiIi0hWDDyIiItIVgw8iIiLSFYMPIiIi0hWDDyIiItIVgw8iIiLSFYMPIiIi0hWDDyIiItIVgw8iIiLSFYMPIiIi0hWDDyIiItIVgw8iIiLSlaGCj6amJtTX16OhoUF2VYiIiEgQQwUfjY2NaG1tRXNzs+yqEBERkSCGCj6IiIgo9TH4ICIiIl0x+CAiIiJdMfggIiIiXTH4ICIiIl0x+CAiIiJdMfggIiIiXTH4ICIiIl0x+CAiIiJdMfggIiIiXTH4ICIiIl0x+CAiIiJdMfggIiIiXTH4ICIiIl0ZKvhoampCfX09GhoaZFeFiIiIBDFU8NHY2IjW1lY0NzfLrgoREREJkiG7AkRGcvy8E84xF66ZWyq7KinBPuLCu2cH0Nx2EcfOObCiZgbuXzMXJflZsqtGRBIx+KC0Zx914cWWbuxs7sAHXXYAwN2ravGdP1mGnEyb5NqZy3n7GA6c6cfBMwNobhvAiQtDAf++93gvfvzmaXxuVR22rpuPWcU5kmpK/obGJ3GqZwg9znGsnFOCUgaHJBiDD0pLiqLg4JkB7Dh4Fr/78DzGJz0AgEybBZMeBTsOduD9DjuaPncV5lcU+L7nGHPht0fOofPiKL64dp4hz+Db+oax93gP7KMufKahFrOLc4WV1T04iv2n+vHO6X4cbBtAe/9IyDLzyvNxzZwSLJ5ZiF+/34Wj3Q48+dYZPLu/HX+6shoPrJsf0MYkjmPMhZMXhvBxjxMnLgzhZM8QPr7gRLd9zLeM1QKsnleGTctn4dZls1BRkI2uwVGc7HHi454hdA+OYUVNMTYurcSMvMj9f2h8Emd6h3Gqdwine4cwPunB9QvLsXp+KbIzGNSnOwYflFYcYy786r0u/OeB9oCz8iUzC3FXQy0+dWUVPjrnxNd+dhgfnXPgT37wFv7hjuUozs3EL97rwu+PXgpUdh7qwD/feQVuWFwh6+cAAMYn3ThwegB7j/fgteO9ONM37Pu3ba+fwta18/GlG+ajMCfT97miKDh+wYlzg2O4bkGZ6gxPr3Mcb5/qw/5T/dh/uj8k2LBagPqqIqyaW4ZV80pxzdwSlBdk+/5967p5eP1EL3742qnp4K8DP23uwC2XzcSXbpiPlXN4uSvYwPAEjp1z4KPzThw758CZvmEsmVWIP7miCg1zS2GzWkK+Mzrhxsc9Qzh+wYkTF5w4fn7qf8/5BRnBKgqzUZSTgVO9w9h/emr7fufFo8jOsGLM5QlZ3ma1YPW8UvxR/UwsrCzE6b4hnOoZwse9QzjVM4zzjtCynnjjNAqyM7B+cTk2Lp0JmxU43TuM09NByvn+AjT/7H3cuLQSNyyqQHHepT47MenB2YERnO4dQlv/MM70Tf3X1jeCvCwb1i0qxw1LKnDt/DLkZaXuoU1RFPQNTaDz4gg6L47inH0Us4pzsWpuadRMonPMha7BUXRdHEXX4Cj+uzsbC9sG0CDpErNFURRFSslROBwOFBcXw263o6ioKKl17dixA3fffbdGNaNojNzWJy848dS+Nvz6cBdGXW4AQG6mDbdfWYW7V9VhRU0xLJZLg/gFxxge3HEYB88MhKxrUWUB3IqC071TB/n7rpuDv9l0GXKzbLjgGMOL73fjV4e70DEwgs9fOwdfu3mR5pdvfvLcDpRevg5/aO3B6yd6MTQ+6fu3DKsFq+aVYnzSg3fbLwIAyvKz8LWbF6G8IBuvHe/F6yd6fQeH2cU5+IubFmHLyhpk2gLnoA+PT+Kd0/3Y93E/9n3ch+MXnAH/brUAy2tm4Nr5pbh2fhlWzilBkV+QE01z2wCeeP0U/vBRj++zlXNK8MC6+bilfmbYg6oMz7+wAys3bMYHnXa0dA7i2Hkn5pTm4U9X1uC6+WWwhqmnoigB/UkNj0dBW/8wWs850NrtwEfnHGg958AFx3jE71QWZmPzitm4qq4Ep3uHcPz8VKBxpn8YkUb2mUXZWDyzEIsqC7FoZgEWVRZgYWWBL4txtn8Erxw9h999eB6Hzw4CALJsVsyvyMeCygJUFGTjndP9OHbeGb4AP+UFWZhfUYAFFflwexTsPd6LXmfk3+PPZrVgZV0J8rNtONM3jI6Lo3B7Yh+usjKsWDW3FOsXl2P94gosmVkY97bQkn3UhY6BEeRm2TC/PF9VXZxjLnQMjOLswAg6L47g7MAIOgZG0HFxFJ0XR8IGgwBQV5qHhrmlWDyzAD3OcV+A0nlxFPZRV8jy37h1CRo3LEz6N/pTe/xm8EGaMVpbK4qC10/04ql9bXjjRK/v80WVBbjn2jn49NXVUQ+Uk24P/u0PJ9C09xRm5GXi9iuq8Kcra7C8uhjjkx784++O4em32wAACyryMbs4F/tO9YUM+vPL8/FPW1YEnGFcHJ7Abz88h2PnnPjEitlYPb8s5u85Zx/Ff314Hq8cPY+Dp/vhwaVBrKIwGxuXVGLD0kpcv7AMhTmZUBQFv2+9gH/83bGAbIhXdoYVhTkZ6BuaAADMLcvDX96yGAsqCvD6iV68caIX7529CJc78ActqyrCmgVluG5BGRrmlgZkVBLxcY8TP37jDH51uAsT7qlBta40D/evmYu7GmpRkD11FmsfceFQ+wAOnx1EeUEWPn11DYpzkys7mKIo6BgYxfudg2jpmP7v7ABcSvgDRvWMXPzpyhrcuKQCZ3qH8UGXHR902dHa7UBZQRZuv7IKn76qBgsrAy8rTUx6cOKCE0e77Tja7cDR6WBjZMIdtpy60jxcNrsQS2cVoa40DwfO9OOVD8/DMTYZdnkAKMnLxJJZhVgysxBLZhVh8cwCLKosDMgmxNLjHMPIuBu1pXkhwWB7/zD+u/UCfn/0AvqGxqeCk4oCLKgswIKKAiysKAgpy+NR8EGXHXs+uoA3TvYhO8PqC07mlefj7TdfR0bNcrx6rAcnewLnCwFAXpYN88qnlp1fno95FfmYW5aPHuc4Xj/Ri9eP96JrcDTgO5WF2Vi3qALrFpXj+oXlqCjMDllvMhRFQe/QONr7R9DWN4yzAyNo6x/B2f5htA+MYHDk0kG/vCDbF6hfVTfDF5icHRhBe/+I7/9fHAkNFPxZLMCsohzUlORiVnEuzvQNobXbgVix2Yy8TFTPyEVNSS6GLpzFVz61HtcvLNeiGXwYfEwz2gExlRmlrScmPfj14S5sf/M0Pp4ewCwW4I/qZ+IL18/D6nmlcZ0J9TjHMCM3C1kZoXemv36iF9/Y1YIev7O5a+aU4FNXVaM4NxPf293q+7d7r5uDq+pm4KWWc3jjRC8m/UaKO66uxsObLgsZGM/2j+DlD87hlaPn0dIxGPBvS2cV4pb6mbj5splYXl0c9gwcAFxuD144cBY/fvM0sjKsuHFxJW5YUoHV86aCoRcOnEXT3o/RPzwR9vu1pblYu7ACaxeW47oFZcImI/Y4xvD022144eBZ34BdmJ2BG5ZU+C4h+I9WuZk2fOqqatx73RxcNrsIbo+C4+edeLd9AO+2X0Rulg1bVtbg6rqSiNvbOebCkU47Dp+9iMNnB3G4YxADYdqhIDsDy6uLsaKmGEtmFeLd9ot4saUbzigHf38raopx82Uzcc4+ig+67Dh+3hkS1AFATqYVS2YVoX52EepnF6K+qghLZhX5AjB/E5MevHmyFy+1dKOtfwQLKgqwdFYhls4uxJJZhagoyJZ6xp8I/zGkY2AEb33cB7dH8QU2lYXRf5OiKDjVO4zXT/TizZO9eOd0f0iWYOmsQl9fHnW5caZ3+hJO/zDGXR40zC3BmoXluHZ+mS+49QYYZ3qH0dY/jLb+EbT3D+NM39T/Rgoavcrys+Acn8TEZPiMRTil+VmoLclFTWkeakvyUFuaO/2/eaiakRMyb8Y55sK77RfRPD33anZxDmpK8lBTkovqklxUz8gNOFEQNV4z+JhmlANiOojW1i63B8+/045z9jF87eZFQq7JjkxMYsfBDjz55mnfte2C7AzcdU0t7l8zF3VleZqXCUxlMR7f+zFK8jJx+5XVqC29VI59xIW//20rdh7qDPle/ewizK/Ix8sfnIOiAEU5GfjGrUtww+JK/O7Dc3j5g3M40mn3LW+xTAU2ty6bhfFTB9F4/2c1+w3D45N4+u02PPH6Kbg9Cq5bUI4bFpdj3aIKzC3P16wcNUYn3Pjl4U489dYZnOoNzNjMK8/H1XUl+LDLHnAJaMnMQnQPjsI5HhoMLJ1ViLtX1eFTV1Xj4vAE3m2/iHfPXsR77RdDAhpg6hLDZVVFuLKmGFfUzkBHyz48eN9dIcHdmMuN37dewK5DHfiwy46FlQVYXj0Dy2uKsKyqGMfPO/Grw114/URv2MsFRTkZuLy6GMuqppZfVlWE+RUFhrncJIPW4/WYy4132y/ijRO9ePNkH1rPOVR/12oBllUVw6MoaOsbxnCUAMNqAapm5GJOWR7mlOVjTmke5pTloa40H3VleSjIzsCYy42WjkG8c3oA75zux4fddpQXZKOuNM/3X21pLupK81Fbmpt0RjEWBh9hMPgwp0htfahtAH/7qw99B4vV80rx1P0NyA9zNpcIx5gLT+9rw3/sO+NLV1YWZuOLa+fhc6vrhO/Earx1sg+P/e4jjLnc2LyiCp+8osqXin+/YxDf/PUH+LArdGC0WoDrFpRh0+Wz8UfLZqKycGpCmah+rSgK3B4FGTb5zx/0eBS8frIXh88O4rJZhVg5t8T3+713Kz27vx2vHD3vO7jnZ9lw9ZwSrJxTgs6Lo9h9pNt35muxIOw8iNrSXFxVW4Kr6mbgytoZqK8qCjirTLat+4bG8VJLNw61XcScsjxcXl2M5dXFqCnJNV1mQjTR43X/0Dj2nerHWyd78W77RRTnZmJeeQHmT1++sViA/af6se9Un29Ol5fVAlSX5GJu2dRlnzll+ZhXPhVs1JTkmu4OHtnBR+pOCaaYugdH8d0Xj+KK2hmaTzoCgMGRCfzj747hp80dAKauQbvcCg6cGcAX/qMZT32hIWw6Wa2h8Uk883Ybtr9x2jeZak5ZHr60fgHuuLraUM/oWLuoHC8vWhf2366snYHfNK7Ffx5oxz+/chxDE5O4dl4ZNq+YjT++fFbA3SKiWSwWZNiMcUC0Wi3YsKQSG5ZUhvybxWLB6vllWD2/DOftYzjYNoD55flYOqswIHD61ifq8av3OvHCwbM4cWEIWRlWrKguxso5Jbh6zlTA4Q1oRCkvyMYXrp+HL1w/T2g5FFtZQTY+ecVU8B/JbctnA5iaY3Wo7SJyMm2YVz51ucNsAYaRMfhIU8fPO3HfUwdx3jGG37dewMyiHGxZWaPZ+l8+cg7f/s2HvnkEn7mmFn+zaSna+odx708O4mDbAO5/6iD+4wsNcWcmRiYm8ez+djzx+ilfpmNhZQEe3LgQm5fPNsRZe7xsVgvuvW4u7rqmFuOTHs0nUqayWcU5EQ8mxbmZuP/6ebhvzVx028dQXpDFAwipMrs4F39yhbhn5KQ7Bh9p6J3T/Xjg2UNwjk2iKCcDjrFJfPPXH+Dy6iIsnZXcZa6LwxP41m8+xO4j5wAAi2cW4O8/vdx3p0dJfhae37oa/+MnB3Co/SLue+ognv6zVapuz3R7FOw61IH/+98nfJM455Xn42s3L8InVlSlxLXynEyboTI2qcJisaB6Bg8kREZhvlNESsrLR87h3p8chHNsEg1zS/D6NzZg/eIKjLk8+Mrz7wU8LyJeH9kz8EfffwO7j5yDzWrBX9y0CLsfXBfyEJsramfgP7dei+LcTLx3dhCf//EB9A1FvvdfURS8euwCNv2/N/A3v/wAPc5x1JTk4l/uvAL//ZfrcfuV1SkReBARpQsGH2nkuf1t+OqO9zDh9uCPl83Cc19cjZL8LHz/M1didnEOTvcN469/cQTxzkEemZjEX//8CJ5ty0OvcxwLKwvwq6+swUO3LA57eyoALK8pxn9uXY3S/Cx80GXHlh+9jbNhHs197LwDn3/yAP7s6UM4cWEIxbmZ+Obmy7Dn6zdgy8oaU15iISJKd4YauZuamlBfX4+GhgbZVUk5z+1vw7d+cxSKMvW8iabPX+1L75fmZ+Hxz12NDKsFLx85h2f3t6te78kLTtz++D787FAHLFDwP9fPx+4H12JFzYyY3728uhg///PrUFOSi7b+Edzxo7dxtHvq1lL7qAuPvHQUm//9Lbx9qh9ZGVZ8af18vPGNDdi6bj6v2xMRmZihgo/Gxka0traiublZdlUMz6PiMcNeLxw4i2/95igA4M9vWIBHPrks5DLFyjkl+JtNSwEAf/dyq++x3NH84t1OfPLxfTjZM4SKwmxsXTCC/3PbZXHNWZhfUYBffnkNls4qRN/QOD7zxDv4f384iZv+9TX8x742uD0KNl0+C3seugEP33ZZXE9nJCIiYzJU8EHqvPLheSz91iv4/h9OxFx256EO/J9ffQAA2Lp2Hv76j5dEfLbAF9fOw6bLZ8HlVvA/nz2EjoHQyyDA1EOgvrGrBV/f1YJRlxtrF5bjt3+xDvMLoj/lL5LKohzs/PPrsHpeKYbGJ/FvfziBvqEJzK/Ix7N/tgo/umdlwIO7iIjI3Bh8mMzZ/hF8Y1cLJtwe/ODVj/Fhlz3isr98rxN//YsjAID718zF326+LOpDjSwWC/7lziuwrKoI/cMT+MLTzSEvIzpvH8NdT+zHrnc7YbUAX79lMZ75s1VJvy+hKCcTz/zZKnzqyiqU5GXi4U1L8cr/Wo/1kt8YS0RE2mPwYSITkx48uOM9OMcnkWG1wO1R8Le/+iDso5v/u/UC/mpXCxQFuOfaOnznT+pVPU0xPzsDP7mvAbOKcvBxzxC+8p/vwjX9sq+WjkF88vG38EGXHaXTt8w+eNMize40ycm04fufvQrvfesWfOmGBREnqxIRkblxdDeR/++VY2jptKM4NxM///IaFGZnoKXTjuffCZwg+mGXHX+x4zA8CnDXNTV49JOXx/UY51nFOfjJ/dcgL8uGfR/345u/+hAvtXTjrif2o8c5jsUzC/CbxuuxZoG2b0P04iOniYhSG4MPyXYf6cbeYz0xl3v12AU8+dYZAMA/b1mBK2tn4H9PTxD95/86jvPTL1I7bx/DF59pxqjLjXWLyvH3n14e8W2n0SyrKsbjn7sKVgvws0MdeHDHYYxPerBxaSV+8eU1nINBREQJY/Ah0bvtF/HVFw5j67OH0NY3HHG5c/ZRfH1nC4CpuRt/tGwWAODzq+pwZe0MDI1P4pGXjmJ4fBJffKYZFxzjWFRZgMc/dzUyk3gOxsalM/HdTy7z/f3Aunn48b3XGOJFbUREZF58vLpE3rtV3B4F//7qSfzfu64MWcbjUfC1n76PiyMuXF5dhIdvW+r7N6vVgsfuWI5P/OAt/O7D82jrH8FH5xwoy8/CU/c3aPJ+kHuvm4vygmzkZtqwYWnoC76IiIjixcyHJIfaBvDmyT7fZM1fH+7Cqd6hkOV2HurAgTMDyMuy4fG7rw55uNZls4uwde3U2zI/OudAVoYV2+/V9tbU25bPZuBBRESaYfAhyb9NZz3uuqYGNy2thEcBfrDnZMAy/UPjeOx3xwAAD92yGHPL88Ou63/dvAh108HGP29ZgZVzSsMuR0REZARxX3ZxuVzYvn07srKy4PF4UFdXh02bNoUst3PnTtjt9oA7F6666iqsXLkyuRqngAOn+7Hv435k2ixo3LAQgyMu7DnWgxdbuvHVjYuwsLIAAPAPvz0G+6gLl80uwv1r5kZcX15WBn75lTXoGxpP+q20REREosUdfOzcuRP3338/8vOnzsJ3796N7u5uVFVVBSw3MTGBBx54QJtapphLWY9a1JTkoaYEuKV+Jv679QL+fc9J/PvdV+Gd0/34xXudsFiAf/j05TFfoFZekI3yguQe9EVERKSHuC+7uFwuX+ABALfddhv27NmjaaVS2f5T/Xjn9ACybFY0bljo+/xrNy8CALx0pBtHu+345q8/BAB8blUdrqorkVJXIiIiEeIKPiYmJlBQUBC4AqsVGRmhCRQ+KCqUoii+rMdnGmpRNSPX92/Lqopx67KZUBTgf/zkID7uGUJ5QRb+961LI62OiIjIlOK67NLT04OKitB3bXg8npDPxsbGsHPnToyOjsLj8eDWW28NuTQT0/AwYEvu1em2sbGp9SSh9ZwdZ/pGsHn57IjLnOkdwqH2i/jTq2siPtTrwKk+fHC8G8U2KxpXzQqp11+uqcYbh9sxOjGGXADf2bgYxcoEMDyRVP31okVbkzpsa/2wrfXDttaPsLZWuU6Loiiq383e1taGzs5OrF27NuDz559/Hvfcc0/AZ7t378bNN9+MnJwcAMC2bdvw2c9+FjNmzAhZ7/j4OMbHx31/OxwO1NbWwg6A0yeJiIjMwQGgGIDdbkdRUeQjeFyXXTIyMuB2q3tt+ic+8Qlf4AEAW7duxcsvvxx22cceewzFxcW+/2pra+OpFhEREZlIXJddKisrceDAgcQKCjMvxOvhhx/GQw895Pvbm/lAdzcQJXJSY+fOnbjrrrsS/v6RzkF85ol3AGDqhWpfXRuyzO4j3fjGriO+v3/+5euwrKo4YJkf7DmJH752CtfOL8V/fGFVwvUxsmTbmtRjW+uHba0ftrV+hLW1wwGomGIRV/CRlZUFh8MR8JnH44HL5Qr4bHJyEi+//DJuv/32gM+t1vCJluzsbGRnh7lNND9/6r8kuHNyklrHMecARrOmMjgtFydxwW3DzKKcgGVe7RjGaFYOrBbAowA/ax3Ao4suNb7bo2DH0X6MZuXgU2sXJ/2bjCrZtib12Nb6YVvrh22tH2FtrfLqSNy32mZmZsLpdPr+3r17NzZs2BCwTEZGBrq7uwM+O3z4MBYvXhxvcdKdvOAM+Pv1E70Bf3s8Ct440QcA+PKNCwAAvzrchdGJSxvgjZO96LaPYUZeJm6dfikcERFRuor7IWOf+cxnsG3bNuTk5MDlcqG6uhpz5871XY5ZvXo1AGDLli344Q9/6MtoFBUV4c4779Sw6vo4cWHqfSuzi3Nwzj6GN0704q5rLs1JaT3nQN/QOPKybHhw4yK82NKNjoFR/O7Dc7jj6hoAwE8PngUAfPqqauRkJnf3DhERkdnFHXxkZmbiwQcfDPncG3R4VVRU4Ctf+UriNTMIb+bjC9fPxT/89hjePNkHt0fxvRDOmwlZs6AMOZk2fOaaWvzL70/gpwc7cMfVNehxjmHPRz0AgM821Mn5EURERAbCF8tF4Rxzods+BgC4c2UtinMzYR91oaVz0LeMN/i4YfHU80+2rKyF1QIcbBvAqd4h/OLdLkx6FFxVNwNLZhXq/huIiIiMhsFHFCd7pi65zCzKRkl+FtYuLAcAvH58KuBwjrnwXvtFAMANi6deOT+rOAcbp18//7PmDvyseeqSy2cbePswERERwOAjKu8ll8UzpzIW3uzGGyengo+3T/Vj0qNgXnk+6sryfN/7zPTllaf3taGtfwT5WTZ8YkWcT3clIiJKUQw+ovBONl1UORV8rJ8OPlo6BnFxeCLkkovXhiUVqCzMxoR76rHzn7yyCvnZcU+vISIiSkkMPqI44ct8TL1Mb1ZxDpbOKoRHAd78uM93+WX94vKA72XYrLjzmhrf35xoSkREdAmDjyhOejMfMy9NFPVmP57edwZdg6PIsllx7fyykO/evaoORTkZuHZ+KVbUFIf8OxERUbritYAI7KMunHdM3emyaDrzAUxdYtn+xmm8d3YQALBqXinyskKbsaYkD28/fBMybRZYLOHfcktERJSOmPmIwDvZdHZxDopyMn2fXzO3BLl+DwoLnu/hryA7A9kZfKgYERGRPwYfEZwIc8kFALIzbFiz4NJllhuWRA4+iIiIKBSDjwh8k00rC0L+zTvvY1ZRDhaF+XciIiKKzFBzPpqamtDU1AS3yrfiiXSyJ/AZH/7uuLoaB9sG8MfLZnE+BxERUZwMFXw0NjaisbERDocDxcVy7xDxXnZZHOaR6IU5mWj63NV6V4mIiCgl8LJLGIMjE+h1jgMAL6sQERFpjMFHGN6sR/WMXD6ZlIiISGMMPsIIfrIpERERaYfBRxjBL5QjIiIi7TD4CCPSMz6IiIgoeQw+wrh0my0vuxAREWmNwUeQgeEJ9A1NAAAW8k4XIiIizTH4COKdbFpbmhv2hXFERESUHAYfQU71Ts/3qOR8DyIiIhEYfATxPlxsVnGO5JoQERGlJgYfQfqn53uU5WdJrgkREVFqYvARZGCYwQcREZFIDD6C9A1NXXYpK8iWXBMiIqLUxOAjCDMfREREYhkq+GhqakJ9fT0aGhqk1aHfG3ww80FERCSEoYKPxsZGtLa2orm5WUr5bo+CiyNTwUcpMx9ERERCGCr4kO3iyAQUBbBYgJK8TNnVISIiSkkMPvx453vMyM1Eho1NQ0REJAKPsH54pwsREZF4DD78eDMfnO9BREQkDoMPP96nm5YXMPggIiIShcGHn/7pyy7MfBAREYnD4MOP7xkf+ZzzQUREJAqDDz++l8rxsgsREZEwDD78DDDzQUREJByDDz99w5zzQUREJBqDDz/ezAfvdiEiIhKHwcc0l9uDwREXAGY+iIiIRGLwMc37QjmrBZiRx+CDiIhIFAYf07x3upTkZcFmtUiuDRERUeoyVPDR1NSE+vp6NDQ06F62704XzvcgIiISylDBR2NjI1pbW9Hc3Kx72b6XyvE2WyIiIqEMFXzI5HupHDMfREREQjH4mOZ7qRzvdCEiIhKKwce0ft8DxnjZhYiISCQGH9P4XhciIiJ9MPiYdumNtgw+iIiIRGLwMe3Srba87EJERCQSg49p3ltt+Wh1IiIisRh8AJiY9MA5NgmAL5UjIiISjcEHLl1ysVktKMrJlFwbIiKi1MbgA/632WbByve6EBERCcXgA3632XK+BxERkXAMPsCXyhEREemJwQf873ThbbZERESiMfgAHzBGRESkJwYfAAY454OIiEg3hgo+mpqaUF9fj4aGBl3L9d7twqebEhERiWeo4KOxsRGtra1obm7Wtdx+TjglIiLSjaGCD1l4qy0REZF+GHyAL5UjIiLSU9oHH2MuN4bGp97rwpfKERERiZf2wYc365Fps6AoJ0NybYiIiFJf2gcf3vkepflZsFj4XhciIiLRGHx4b7Pl002JiIh0weBjiLfZEhER6Sntg48BPlqdiIhIV2kffPQN86VyREREeor79g6Xy4Xt27cjKysLHo8HdXV12LRpU8hyR48exd69e5Gbm4uhoSFs2bIF1dXVmlRaS7zsQkREpK+4g4+dO3fi/vvvR35+PgBg9+7d6O7uRlVVlW8ZRVHw9ttv46tf/arvsyeeeAJf+tKXNKiytnjZhYiISF9xX3ZxuVy+wAMAbrvtNuzZsydgmX379mHjxo0Bny1cuBCdnZ0JVlOc/iG+VI6IiEhPcWU+JiYmUFBQEPCZ1WpFRkbgatrb27F27dqAz1asWIGWlhbU1NQkWNXkneodwtn+kYDPuu1jAPh0UyIiIr3EFXz09PSgoqIi5HOPxxPwt6IoIcuUl5ejt7c37HrHx8cxPj7u+9vhcMRTLdV+8W4nfvjaqbD/VsHMBxERkS7iCj4mJydhs9lCPg8XbASzWCxwu91h/+2xxx7DI488EvL5rl27kJeXF08VQ3R1dWHHjh0AgM6+TFTnhmY4avLceOu/fgM+4DQ5/m1NYrGt9cO21g/bWj+i2npkZCT2Qogz+MjIyIgYQPgL95hyRVFgtYafYvLwww/joYce8v3tcDhQW1uLO++8E0VFRfFUMcSOHTtw9913AwDuTmpNFIt/W5NYbGv9sK31w7bWj6i2djgc2Lp1a8zl4go+KisrceDAgZjLhQs+ent7UV5eHnb57OxsZGfzsgcREVE6iOtul6ysrJD5GB6PBy6XK+Czuro6nDx5MuCzlpYWLFmyJMFqEhERUaqI+zkfmZmZcDqdKCwsBDD1nI8NGzYELLN27Vps27YNixYt8n320Ucf4ZZbblFVhncOiRYTT0dGRoRNYKVAbGv9sK31w7bWD9taP6La2rvOWHNBLYqa2aJ+XC4Xtm3bhpycHLhcLlRXV+P222/3XY5ZvXo1gKknnL766qvIzc2F3W7Hli1bMGfOHFVldHZ2ora2Np5qERERkUF0dHREfbRG3MGHHjweD7q7u1FYWBh2/oha3omrHR0dSU9cDaehoQHNzc2ar1fkukWtl22t33rZ1vqtl22t37rZ1vqtW2RbK4oCp9OJqqqqiDeZAAlcdtGD1WrV9GFkRUVFQjqzzWYTsl6R6xZZZ4Btrcd6vdjW4tfrxbbWb91sa/3WLaqti4uLYy6T9m+1TUZjY6Pp1i2yziKxrfXDttaPGdta9LpFMWt7mLGt1TDkZRetOBwOFBcXw263Cz0rIra1ntjW+mFb64dtrR8jtHVKZz6ys7Pxne98h88Q0QHbWj9sa/2wrfXDttaPEdo6pTMfREREZDwpnfkgIiIi42HwQURERLpi8EFERES6MuRzPrTgcrmwfft2ZGVlwePxoK6uDps2bZJdrZTQ3t6OF198EXl5eXC5XFiyZInvEftHjx7F3r17kZubi6GhIWzZsgXV1dWSa5waenp68Mgjj6CpqQkA21qEkZERPPvss7BYLFiwYAFuvvlmAGxrrbW3t+OXv/wlCgsLMTExgeLiYnz+858HwLbWyv79++FyubB+/XrfZ7Ha9mc/+xnsdjuAqeeLfPGLXxRXQSVFPf/888rQ0JDv75deeknp6uqSWKPU0dTUFPD3L37xC6Wnp0fxeDzK9u3bA/5t27ZtelYtpT3++OPKs88+qyiKwrYWwOVyKd/97ncVp9MZ8DnbWnvf//73A/7ev3+/snfvXra1Bl566SXl8ccfV44cOaI899xzvs9jte3+/fuV999/3/d3Z2ensnv3bmH1TNnLLi6XC/n5+b6/b7vtNuzZs0dijVLDsWPHsGrVqoDPNm7ciIMHD2Lfvn3YuHFjwL8tXLgQnZ2delYxJe3Zswc33nij73UDbGvtvfDCC/jKV76CgoKCgM/Z1toaHh4Oec/Xtddei46ODra1BjZv3ozGxkYsX7484PNYbXvs2DFcccUVvn+rrq5Gb2+vsHqmZPAxMTERMoBYrVZkZKTsVSbd1NTUYMWKFQGfjY6OIjs7G+3t7ViwYEHAv61YsQLHjh3Ts4opZ3h4GKdPn8ayZct8n7GttTcyMoKKioqQz9nW2rLZbBgbGwv5fHJykm2tgUjvQ4vVtpmZmSHfEfkckJQMPnp6esIOIh6PR0JtUktBQQGysrICPvvDH/6AdevWhX2Fcnl5udDoOR0888wzuOeeewI+Y1tra2JiAnl5eXjttdfwzDPP4KmnnsI777wDgG2ttZycHAwNDaGvr8/32c6dO7F+/Xq2tUCx2jbcv4s8ZqZkKmBychI2my3k83CNS8k5e/YsZsyYETFCtlgscLvdOtcqdRw+fBhLly5Fbm5uzGXZ1onr7+/HgQMHsG7dOtx4440AgL1792Lfvn1hl2dbJ+fuu+9GY2MjlixZgpMnT+ITn/gEFixYgP3794csy7YWJ1bbijxmpmTwkZGRwc6qA5fLhZdeesn34qNw6T5FUaK+Vpkic7vdePXVV/H1r3895N/Y1toaHx/HzTffjHnz5vk+27BhA55++umw6Wi2deI8Hg9+9KMf4fHHH/ddHt+7dy9ee+019muBYrVtpMs1oqRk8FFZWYkDBw7IrkbKe/LJJ3Hffff5/g7XeXt7e1FeXq5ntVKGtw8//fTTvs/279+PyclJdHd3hyzPtk5cVlYWZsyYEfK5zWZjv9bY3r17cddddwXMy9uwYQOeeuop5OTkhCzPttZGrH7M4EMDWVlZcDgcAZ95PB64XC5JNUo9L774IjZs2BAwgNTV1eHkyZNYtGiR77OWlhYsWbJERhVNb82aNVizZk3AZxkZGbjnnnvw1ltvsa01NHPmTLzxxhshn7tcLsybN49traHh4WGUlJSEfJ6VlcUxRKBYbTs+Ph7ynXATg7WSsrmszMxMOJ1O39+7d+/2PQiLknPkyBFkZGRg6dKlAZ+vXbs25Hbmjz76KOS2Okoe21pbNpsNo6OjGBkZ8X3W3t6OgoICtrXGrrvuOrz00ksBn9ntdkxMTLCtBYrVtvX19Xjvvfd8/9bV1YXS0lJh9UnZt9q6XC5s27YNOTk5cLlcqK6uxu233y67WqanKAruuOMObN68OeDz/Px83H333Th69CheffVV5Obmwm63Y8uWLRw4NPT888/77nxhW2vL5XLh2Wefhdvt9l0L37p1KywWC9taYwcOHMChQ4eQk5Pjy0o/8MADyMzMZFtryH+8AGKPGT/96U99Vw0mJyfx5S9/WdjlmJQNPoiIiMiYUvayCxERERkTgw8iIiLSFYMPIiIi0hWDDyIiItIVgw8iIiLSFYMPIiIi0hWDDyIiItIVgw8iIiLSFYMPIiIi0hWDDyIiItIVgw8iIiLSFYMPIiIi0tX/D0mzQM7CrM7TAAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 640x480 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, axs = plt.subplots(2, 1, sharex = True)  # 创建子图\n",
    "\n",
    "## 可视化1：抛掷结果散点图\n",
    "axs[0].plot(iteration[up.flatten()], toss[up],  \n",
    "         color='r', marker='.', linestyle='None')  # 正面结果为红色圆点\n",
    "\n",
    "axs[0].plot(iteration[~up.flatten()], toss[~up], \n",
    "         color='b', marker='x', linestyle='None')  # 反面结果为蓝色叉号\n",
    "axs[0].plot(iteration,toss,color = '0.8', lw = 0.2)\n",
    "axs[0].set_yticks([0, 1])  # 设置y轴刻度为0和1\n",
    "\n",
    "## 可视化2：累计均值曲线\n",
    "cum_mean = np.cumsum(toss) / iteration  # 计算每次抛掷的累计均值\n",
    "\n",
    "axs[1].plot(iteration, cum_mean)  # 绘制累计均值曲线\n",
    "axs[1].axhline(y=0.5, color='r')  # 绘制参考线y=0.5\n",
    "axs[1].set_yticks([0, 0.5, 1])  # 设置y轴刻度"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "85a80909-2aac-49ed-bb7a-f8cc6b80ee7d",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "ecd322f4-f919-4be2-adc3-69d28ef25e69",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.12.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
